package demo;
//class outclass{
//    public int data1=1;
//    private int data2=2;
//    public static  int data3=3;
//    //静态内部类
//    static  class Innerclass{
//        public int data4=4;
//        private int data5=5;
//        public static int data6=6;
//        public void test(){
//            outclass outclass=new outclass();
//            System.out.println(outclass.data1);
//            System.out.println(data3);
//            System.out.println(data4);
//            System.out.println(data5);
//            System.out.println(data6);
//            System.out.println("静态内部类被执行力.....");
//        }
//    }
//
//}
class Outclass1{
    public int data1=1;
    private int data2=2;
    public static  int data3=3;
    //实例内部类
    class Innerclass1{
        public int data1=1000;
        public int data4=4;
        private int data5=5;
        public static int data6=6;
        public void test(){
            System.out.println("内部类被执行力.....");
            System.out.println(data1);
            System.out.println(this.data1);
            Outclass1 outclass1=new Outclass1();
            System.out.println(outclass1.data1);
            System.out.println(Outclass1.this.data1);
        }
    }
}
class Out{
    public void test1(){
        System.out.println("haha");
    }
}
interface IA{
    void test1();
}
public class Test {
    public static void main(String[] args) {
        IA a=new IA(){
            @Override
            public void test1() {
                System.out.println("hahahaaha");
            }
        };
        a.test1();
        //匿名内部类
//        new Out(){
//
//        }.test1();
        //匿名内部类的重写
//        new Out(){
//            @Override
//            public void test1() {
//                System.out.println("heiheihei......");
//            }
//        }.test1();
    }
    public void testMethod(){
        //局部内部类
        class Inner{
            public int data1;
            public void func(){
                System.out.println("func");
            }
        }
        Inner inner=new Inner();
        inner.func();
    }
    public static void main2(String[] args) {
        //如何实例化一个实例内部类
        Outclass1 outclass1=new Outclass1();
        Outclass1.Innerclass1 innerclass2=outclass1.new Innerclass1();
        innerclass2.test();

    }
//    public static void main1(String[] args) {
//        //如何实例化一个静态内部类对象
//        outclass.Innerclass innerclass=new outclass.Innerclass();
//        innerclass.test();
//    }
}
